package old.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;


//@Entity
@Table(name = "tb_veiculo", schema="teste")
@NamedQueries({ @NamedQuery(name = "listarVeiculos", query = "from Veiculo "),@NamedQuery(name = "pesquisarPlaca", query = "from Veiculo veiculo where veiculo.placa = :placa") })
public class Veiculo implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 8984275777452494057L;

	@Id
	@SequenceGenerator(name = "VEICULO_ID_SEQ", sequenceName = "tb_veiculo_id_veiculo_seq", schema="teste")
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "VEICULO_ID_SEQ")
	@Column(name = "id_veiculo")
	private Long idVeiculo;
	
	@Column(name = "placa_veiculo", nullable = false, length = 7)
	@NotNull
	@Size(max=7,min=7,message="Placa deve ter 7 dígitos")
	@Pattern(regexp = "[a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9]", message="Placa deve ser formato AAA1111")
	private String placa;
	
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name = "id_proprietario")
	private Pessoa proprietario = new Pessoa();
	
	public String getPlaca() {
		return placa;
	}

	public void setPlaca(String placa) {
		this.placa = placa;
	}

	public Long getIdVeiculo() {
		return idVeiculo;
	}

	public void setIdVeiculo(Long idVeiculo) {
		this.idVeiculo = idVeiculo;
	}

	public Pessoa getPessoa() {
		return proprietario;
	}

	public void setPessoa(Pessoa pessoa) {
		this.proprietario = pessoa;
	}
}
